#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>

// ./mycat filename
int main(int argc, char* argv[])
{
    printf("我是一个进程，pid: %d\n", getpid());
    if(argc != 2)
    {
        //输入错误，应该这样输入,argv[0]表示该文件文件名
        printf("Usage: %s filename\n", argv[0]);
    }

    FILE* pf = fopen(argv[1], "r");
    if(!pf)
    {
        perror("fopen");
        return 1;
    }
    
    char buffer[1024];
    while(1)
    {
        buffer[0] = 0;//每次读取之前把buffer置为空
        int n = fread(buffer, 1, sizeof(buffer) - 1, pf);
        if(n > 0)
        {
            //读取成功,buffer[n]默认为随机值，需要置为0
            buffer[n] = 0;
            printf("%s", buffer);
        }
        else if(feof(pf))
        {
            break;
        }
    }

    fclose(pf);
    return 0;
}



//// ./mycat filename
//int main(int argc, char* argv[])
//{
//    printf("我是一个进程，pid: %d\n", getpid());
//    if(argc != 2)
//    {
//        //输入错误，应该这样输入,argv[0]表示该文件文件名
//        printf("Usage: %s filename\n", argv[0]);
//    }
//
//    FILE* pf = fopen(argv[1], "r");
//    if(!pf)
//    {
//        perror("fopen");
//        return 1;
//    }
//    
//    char buffer[1024];
//    int ret = fread(buffer, 1, sizeof(buffer) - 1, pf);
//    if(ret > 0)
//    {
//        //读取成功
//        printf("%s", buffer);
//    }
//
//    fclose(pf);
//    return 0;
//}
//
